package service;

import dao.ItemDAO;
import dao.ItemDAOImpl;
import entity.Item;
import java.util.List;

/**
 * 负责处理和商品相关的各种操作。
 */
public class ItemService {

    // 商品DAO，用来实际操作商品相关的数据库表
    private ItemDAO itemDAO;

    public ItemService() {
        this.itemDAO = new ItemDAOImpl();
    }

    /**
     * 发布一个新商品
     */
    public boolean publishItem(int userId, String name, double price, String category,
                               String description, int usageMonths, String condition) {
        // 1. 把接收到的零散信息，组装成一个Item对象
        Item item = new Item(userId, name, price, category, description, usageMonths, condition);

        // 2. 调用DAO层的方法，把这个Item对象保存到数据库里
        return itemDAO.addItem(item);
    }

    /**
     * 获取所有在售的商品列表
     */
    public List<Item> getAllItems() {
        return itemDAO.getAllItems();
    }

    /**
     * 根据分类获取商品列表（比如用户选择“数码”分类）
     */
    public List<Item> getItemsByCategory(String category) {
        return itemDAO.getItemsByCategory(category);
    }

    /**
     * 获取指定用户发布的所有商品（比如用户查看自己发布的商品）
     */
    public List<Item> getItemsByUserId(int userId) {
        return itemDAO.getItemsByUserId(userId);
    }

    /**
     * 根据关键词搜索商品（比如用户搜“手机”）
     */
    public List<Item> searchItems(String keyword) {
        return itemDAO.searchItems(keyword);
    }

    /**
     * 根据商品ID获取一个商品的详细信息（比如用户点击商品进入详情页）
     */
    public Item getItemById(int itemId) {
        return itemDAO.getItemById(itemId);
    }

    /**
     * 更新商品的状态（比如商品售出后改成“已售”，或者用户下架商品）
     */
    public boolean updateItemStatus(int itemId, String status) {
        return itemDAO.updateItemStatus(itemId, status);
    }

    /**
     * 删除一个商品（用户删除自己发布的商品）
     */
    public boolean deleteItem(int itemId) {
        return itemDAO.deleteItem(itemId);
    }
}